﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Property;
using Property.Common;

namespace Property.Samples.Concepts
{
    public struct Point
    {
        public float Latitude { get; set;}
        public float Longitude { get; set; }
    }
    public interface IObjectWithCoordinates
    {
        Point Coordinates
        {
            get; set;
        }
    }
    public class CityConcept:Concept,IObjectWithCoordinates
    {
        //hiding constructor
        protected CityConcept(){}
        //wrapping it
        public static readonly Func<CityConcept> New = WrappedConstructor<CityConcept, Func<CityConcept>>.New;

        //sample new virtual declaration
        public new virtual bool Modified
        {
            get; set;
        }
        
        public virtual string Name { get; set; }

        #region Implementation of IObjectWithCoordinates

        public virtual Point Coordinates { get; set; }

        #endregion
    }
}
